/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package neuronalenetzeelearning.view.controlpanel;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import neuronalenetzeelearning.model.Graph;

/**
 *
 * @author Henning Ainödhofer
 * 
 */
public class DescriptionGraphPanel extends GraphPanelProperty {

    JFileChooser fc;
    File loadGraph;

    public DescriptionGraphPanel(Graph graph) {
        super(graph);
        this.setBackground(background);
        this.setLayout(grid);
        this.setBorder(javax.swing.BorderFactory.createTitledBorder("Neuronales Netz erstellen"));

        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.gridheight = 1;
        constraints.gridx = 1;
        constraints.gridy = 1;

        JLabel bord = new JLabel("------------------------------------------------------------------------------------------------------------------");
        add(bord, constraints);

        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridheight = 1;
        constraints.gridx = 1;
        constraints.gridy = 2;

        //building controls on the panel
        JLabel Description = new JLabel();
//        Description.setEditable(false);
        Description.setPreferredSize(new Dimension(400, 400));

        Description.setText("<html><ul>"
                + "Zur Erstellung eines neuronalen Netzes gibt es folgende Möglichkeiten."
                + "<ol>"
                + "<li>Knoten hinzufügen</li>"
                + "<ul>"
                + "<li>Klicke mit der rechten Maustaste ins linke Fenster und wähele 'add Layer 1 Node' oder 'add Layer 2 Node', um einen Knoten in die 1. bzw. 2. Schicht einzufügen.</li>"
                + "<li>Klicke mit der linken Maustaste einen Knoten an. In die entsprechende Schicht wird automatisch ein Knoten eingefügt.</li>"
                + "</ul>"
                + "<li>Knoten entfernen</li>"
                + "<ul>"
                + "<li>Klicke mit der rechten Maustaste auf den zu entfernenden Knoten und wähle 'delete'.</li>"
                + "</ul>"
                + "<li>Kante hinzufügen</li>"
                + "<ul>"
                + "<li>Klicke mit der rechten Maustaste einen Knoten der 1. Schicht an und wähle 'add Edge'.</li>"
                + "</ul>"
                + "</ol>"
                + "Sobald du dein neuronales Netz erstellt hast klicke auf 'Weiter', um weitere Einstellungen vorzunehmen."
                + "</html></ul>");

        //Description.setBorder(javax.swing.BorderFactory.createTitledBorder("Wie erstelle ich ein Neuronales Netz?"));

        this.add(Description, constraints);

        constraints.gridwidth = GridBagConstraints.RELATIVE;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridx = 1;
        constraints.gridy = 3;

        navigation.add(loadGraphFromFile, constraints);
        navigation.add(saveGraphToFile, constraints);
        navigation.add(next, constraints);
        // navigation.add(help, constraints);

        this.add(navigation, constraints);
        this.validate();
        this.setVisible(true);
    }

    @Override
    public void setGraph(Graph graph) {
        this.graph = graph;
    }

    @Override
    public void PanelUpdate() {
        this.repaint();
    }

    @Override
    public ActionListener getActionListener() {
        return new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Help from Learning Rule Chooser Panel");
            }
        };

    }

    public static void main(String[] args) {
        JFrame test = new JFrame();
        test.setPreferredSize(new Dimension(800, 800));
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Graph graph = new Graph();
        test.add(new DescriptionGraphPanel(graph.getExampleGraph()));
        test.pack();
        test.setVisible(true);
    }
}
